package com.lovo.project.service;

import com.lovo.project.model.PermissionDO;

import java.util.List;

/**
 * @title 权限业务接口
 * @author: luo
 * @date: 2020/11/3 20:58
 */
public interface PermissionService {

    /**
     * 添加权限
     *
     * 添加权限时，检查权限名是否重复。如果权限名重复，抛出权限名重复异常
     *
     * 如果影响数据库行数<=0.则抛出添加权限异常。
     *
     * @param permissionDO 所要添加的权限对象
     */
    void addPermission(PermissionDO permissionDO);

    /**
     * 修改权限
     *
     * 修改权限时，检查权限名是否重复，重复则抛出权限名重复异常。
     *
     * 如果影响数据库行数<=0。则抛出修改权限异常。
     * @param permissionDO 新的权限
     */
    void updatePermission(PermissionDO permissionDO);

    /**
     * 按权限编号查询权限信息
     *
     * @param permissionId 权限编号
     * @return 权限对象
     */
    PermissionDO findPermissionById(Integer permissionId);

    /**
     * 动态查询权限
     *
     * 根据用户输入，动态查询权限
     * 如果 返回null，则抛出查询权限异常
     *
     * @param permissionName
     * @return
     */
    List<PermissionDO> listPermissionByInfo(String permissionName);

    /**
     * 按权限编号删除权限
     *
     * 如果影响数据库行数<=0。则抛出删除权限异常
     *
     * @param permissionId 权限编号
     */
    void deletePermissionById(Integer permissionId);


}
